package br.unisinos.pdm;

import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;

/**
 * Ping Pong Bluetooth - classe que renderiza a tela do game
 *
 * @author  Daniel Correa
 * @version 1.0
 */
public class GameCanvas extends Canvas implements CommandListener {

    private int posicaoJogador1 = 0;
    private int posicaoJogador2 = 0;

    public GameCanvas() {
       
        this.setFullScreenMode(true);
        this.setCommandListener(this);
        
    }

    protected void paint(Graphics g) {

        //pega altura e largura da tela
        int w = getWidth();
        int h = getHeight();

        //pinta um quadrado branco no fundo
        g.setColor(255,255,255);
        g.fillRect( 0,0,w,h );

        //desenha o jogador 1
        g.setColor(0,0,0);
        int posicao1 = ((w/2)-20)+(posicaoJogador1*10);
        //verifica se nao chegou no limite da tela
        if (posicao1 < 0) { posicao1 = ((w/2)-20)+((++posicaoJogador1)*10); }
        if (posicao1 > (w-40)) { posicao1 = ((w/2)-20)+((--posicaoJogador1)*10); }
        g.fillRect( posicao1 ,10,40,10 );

        //desenha o jogador 2
        g.setColor(0,0,0);
        int posicao2 = ((w/2)-20)+(posicaoJogador2*10);
        //verifica se nao chegou no limite da tela
        if (posicao2 < 0) { posicao2 = ((w/2)-20)+((++posicaoJogador2)*10); }
        if (posicao2 > (w-40)) { posicao2 = ((w/2)-20)+((--posicaoJogador2)*10); }
        g.fillRect( ((w/2)-20) ,(h-20),40,10 );
      
    }

    public void commandAction(Command c, Displayable d) {
        System.out.println(c.toString());
    }

    
    public void keyPressed(int keyCode) {

        //controla a direcao do jogador (esquerda e direita)
        if (keyCode == KEY_NUM4 || keyCode == -3) {
            posicaoJogador1--;
        } else if (keyCode == KEY_NUM6 || keyCode == -4) {
            posicaoJogador1++;
        }

        //chama o repaint para atualizar a tela
        repaint();
    }
}